Software applications that use relational databases for storage are often required to support multiple database types. However, each database type has a unique structure and contains features that may be inapplicable to other database types. For example, an Oracle® database supports data types (e.g., BIGINT, SMALLINT) not supported by PostGres, which classifies integers by the desired number of digits. Furthermore, Oracle® and PostGres have different tuning parameters (e.g., logging parameters, table spaces) as well as a different constraint syntax. Differences such as these are apparent between many of the commonly used databases. Therefore, a software developer using relational databases for storage cannot create a single database schema that will be supported by every database type. Because of the differences in structure and function, each database type uses a different data dictionary language (ddl), requiring a separate schema to define the desired database structure for that database type. Accordingly, software developers must maintain separate copies of their schema, each copy with its own database specific syntax. Any changes made to the schema will have to be made on each copy using that database specific syntax. This can be time consuming and inefficient.